
/*
 * Hlpay-Plus aggregate payment system. Copyright
 * (c) 2022-2023 Hlpay Team Copyright has the right of final interpretation.
 */
package com.hlkj.pay.service.common;

import java.util.List;

import com.hlkj.framework.common.pojo.PageResult;
import com.hlkj.pay.dto.ad.AdStatisticsDto;
import com.hlkj.pay.dto.admin.AdminUserBehaviorLogDto;
import com.hlkj.pay.dto.admin.QueryUserBehaviorLogDto;
import com.hlkj.pay.dto.common.BusinessLogDto;
import com.hlkj.pay.dto.common.OrderStatusDto;
import com.hlkj.pay.dto.common.QueryChangeLogDto;
import com.hlkj.pay.dto.order.StatisticsDto;
import com.hlkj.pay.enums.CommonEnum;
import com.hlkj.pay.infrastructure.model.admin.AdminUserBehaviorLogDO;
import com.hlkj.pay.infrastructure.model.common.ChangeLogDO;
import com.hlkj.pay.infrastructure.model.common.LimitRouterLogDO;
import com.hlkj.pay.infrastructure.model.common.RequestLogDO;
import com.hlkj.pay.infrastructure.model.user.UserRequestLogDO;

/**
 * @author HlpayTeam
 * @date 2024/09/06 10:45
 */
public interface IBusinessLogService {

    /**
     * 新增业务日志
     * @param relationCode
     * @param changeLogModelType
     * @param beforeValue
     * @param afterValue
     */
    void addBusinessChangeLog(String relationCode, Integer type, CommonEnum.CHANGE_LOG_MODEL_TYPE changeLogModelType, Object beforeValue,
			Object afterValue) ;

    /**
     * 新增Behavior日志
     * @param permissionCode
     * @return
     */
    String addBehaviorLog(String permissionCode);

    /**
     * 新增login日志
     */
    void addLoginInLog();

    /**
     * 新增login日志
     */
    void addLogOutLog();
    
    /**
     * consumeBusinessLog
     * @param businessLog
     */
    void consumeBusinessLog(List<BusinessLogDto> businessLogList);
    /**
     * queryChangeLogList
     * @param queryAdminChangeLog
     * @return
     */
    PageResult<ChangeLogDO> queryChangeLogList(QueryChangeLogDto queryAdminChangeLog);
    /**
     * queryBehaviorList
     * @param queryUserBehaviorLog
     * @return
     */
    PageResult<AdminUserBehaviorLogDto> queryBehaviorList(QueryUserBehaviorLogDto queryUserBehaviorLog);
    /**
     *
     * @param localAdminUserRequest
     */
    void consumeBusinessPramsLog(List<AdminUserBehaviorLogDO> adminUserBehaviorLogList);
    /**
     *
     * @param requestLogDO
     */
    void consumeRequestLog(List<RequestLogDO> requestLogList);
    void consumeOrderStatusLog(String topic, OrderStatusDto orderStatusDto);
    void consumeAdOrderStatusBatchLog(String topic, List<AdStatisticsDto> adStatisticsDtos);
    void consumeOrderStatusBatchLog(String topic, List<StatisticsDto> adStatisticsDtos);
    void addLimitRouterLog(LimitRouterLogDO limitRouterLogDO);
    /*
    
     */
    void consumeClientBusinessPramsLog(List<UserRequestLogDO> userRequestLogList);
}
